# -*- coding:utf-8 -*-
# 迭代器
"""
迭代器是一种对象，该对象包含值的可计数数字。

迭代器是可迭代的对象，这意味着您可以遍历所有值。

从技术上讲，在 Python 中，迭代器是实现迭代器协议的对象，它包含方法 __iter__() 和 __next__()。
"""

# 迭代器与可迭代对象
# 列表、元组、字典和集合都是可迭代的对象。它们是可迭代的容器

# 获取迭代器的__iter__()方法
# 方式一：
# var1 = iter("你好，世界")
# # 从迭代器中拿到数据 next()
# # 方式一：
# print(var1.__next__())
# print(var1.__next__())
# print(var1.__next__())
# print(var1.__next__())
# print(var1.__next__())
#
# # 方式二：
# var2 = "你好，世界".__iter__()
# # 方式二：
# print(next(var2))
# print(next(var2))
# print(next(var2))
# print(next(var2))
# print(next(var2))


# for循环
# li = ["张三", "李四", "王五"]
# for data in li:
#     print(data)


# 使用迭代器，用while模拟for循环
li = ["张三", "李四", "王五"]
new_li = li.__iter__()
while True:
    try:
        data = new_li.__next__()
        print(data)
    except StopIteration:
        print("没东西拿了")
        break
